package com.kanshu;

import com.kanshu.constant.MenuType;
import com.kanshu.model.BreakOut;
import com.kanshu.model.SocketUser;
import com.kanshu.service.UserService;
import com.kanshu.service.impl.UserServiceImpl;

import java.io.*;
import java.util.Scanner;


/**
 * @author GAIst
 * ClassName SocketClient.java
 * From
 * Description OK
 * createTime 2024年12月20日14:32:26
 */
public class SocketClient {

    private static boolean running = true;
    private static final UserService userService;
    private static final MenuType MENU_TYPE = new MenuType();
    static {
        try {
            userService = new UserServiceImpl();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }


    /**
     * 主程序入口
     * 控制用户交互流程，包括用户登录、注册和退出系统
     *
     * @param args 命令行参数
     * @throws IOException 当输入输出操作失败时抛出
     */
    public static void main(String[] args){
        // 创建Scanner对象以读取用户输入
        Scanner sca = new Scanner(System.in);
        String choose;

        // 系统运行循环
        //未修改就是死循环
        while (running) {
            // 显示菜单
            System.out.println(MENU_TYPE.getMENU_START());
            // 读取用户选择
            choose = sca.nextLine();

            // 根据用户选择执行对应操作
            switch (choose) {
                case "1":
                    // 用户登录
                    BreakOut breakOut;
                    do {
                        breakOut = userService.login(sca);
                    } while (!breakOut.getResult());
                    // 如果用户选择退出登录，则跳出循环
                    break;

                case "2":
                    // 用户注册
                    userService.enroll(sca);
                    break;

                case "3":
                    // 用户选择退出系统
                    SocketUser socketUser;
                    System.out.println(MENU_TYPE.getOUTPUT_TEXT_THANK());
                    try {
                        socketUser = new SocketUser();
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                    socketUser.sendExit();
                    running = false;
                    break;

                default:
                    // 当用户输入无效选项时，给出提示
                    System.out.println(MENU_TYPE.getOUTPUT_TEXT_INVALIDINPUT());
                    break;
            }
        }
        // 关闭Scanner对象
        sca.close();
    }
}
